DELIMITER $$
CREATE DEFINER=`buls_r`@`localhost` PROCEDURE `a_check`(IN `tuser` VARCHAR(255), IN `tpass` VARCHAR(255))
    SQL SECURITY INVOKER
BEGIN
    SELECT IF(EXISTS (SELECT 1 FROM aaa WHERE name = tuser AND pass = tpass), 2, IF(EXISTS (SELECT 1 FROM aaa WHERE name = tuser), 1, 0)) AS result;
END$$
DELIMITER ;

DELIMITER $$
CREATE DEFINER=`buls_r`@`localhost` PROCEDURE `a_create`(IN `tname` VARCHAR(255), IN `tpass` VARCHAR(255))
    SQL SECURITY INVOKER
BEGIN
    IF NOT EXISTS (SELECT 1 FROM aaa WHERE name = tname) THEN
        INSERT INTO aaa (name, pass) VALUES (tname, tpass);
    ELSE
        SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Username already exists';
    END IF;
END$$
DELIMITER ;

DELIMITER $$
CREATE DEFINER=`buls_r`@`localhost` PROCEDURE `a_delete`(IN `tid` INT)
    SQL SECURITY INVOKER
BEGIN
    DELETE FROM aaa WHERE id=tid;
END$$
DELIMITER ;

DELIMITER $$
CREATE DEFINER=`buls_r`@`localhost` PROCEDURE `a_get_uid`(IN in_name VARCHAR(50), IN in_pass VARCHAR(50))
BEGIN
    SELECT id FROM aaa WHERE name = in_name AND pass = in_pass LIMIT 1;
END$$
DELIMITER ;

DELIMITER $$
CREATE DEFINER=`buls_r`@`localhost` PROCEDURE `a_session_check`(IN `tid` INT, IN `status` INT)
    SQL SECURITY INVOKER
BEGIN
    IF EXISTS (SELECT 1 FROM aaa WHERE id = tid AND active = 1) THEN
        SET status = 1;
    ELSE
        SET status = 0;
    END IF;
END$$
DELIMITER ;

DELIMITER $$
CREATE DEFINER=`buls_r`@`localhost` PROCEDURE `a_session_end`(IN `tid` INT)
    SQL SECURITY INVOKER
BEGIN
	UPDATE aaa SET active = 0, time = null WHERE id = tid;
END$$
DELIMITER ;

DELIMITER $$
CREATE DEFINER=`buls_r`@`localhost` PROCEDURE `a_session_start`(IN `tid` INT)
    SQL SECURITY INVOKER
BEGIN
	UPDATE aaa SET active = 1, time = CURRENT_TIMESTAMP WHERE id = tid;
END$$
DELIMITER ;

DELIMITER $$
CREATE DEFINER=`buls_r`@`localhost` PROCEDURE `a_session_timeout`()
    SQL SECURITY INVOKER
BEGIN
    UPDATE aaa
    SET active = 0,
        time = NULL
    WHERE `time` <= (NOW() - INTERVAL 5 MINUTE_SECOND)
      AND active = 1;
END$$
DELIMITER ;

DELIMITER $$
CREATE DEFINER=`buls_r`@`localhost` PROCEDURE `a_update`(IN `tid` INT, IN `v1` VARCHAR(255), IN `v2` CHAR(255))
    SQL SECURITY INVOKER
BEGIN
    IF NOT EXISTS (SELECT 1 FROM aaa WHERE name = v1 AND id != tid) THEN
        UPDATE aaa SET name = v1, pass = v2 WHERE id = tid;
    ELSE
        SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Username already exists';
    END IF;
END$$
DELIMITER ;
